Oracle 创建PDB

1. 创建PDB

1 文件系统创建pdb

create pluggable database salesppdb
admin user sales identified by foo
FILE_NAME_CONVERT= ('/u01/app/oracle/oradata/CDB/pdbseed','/u01/app/oracle/oradata/CDB/salespdb');

在OMF 打开的情况下无需设置FILE_NAME_CONVERT

create pluggable database salesppdb
admin user sales identified by foo

2 本地克隆创建PDB

alter pluggable database SALESPPDB close;
alter pluggable database SALESPPDB open read only;

注意:

如果是RAC其他节点上的本PDB都要关闭
-非OMF方式创建

create pluggable database SALESPPDB2
from SALESPPDB 
FILE_NAME_CONVERT=('/u01/app/oracle/oradata/CDB/salespdb',/u01/dbfile/CDB/salespdb2')
create pluggable database SALESPPDB2
from SALESPPDB 

说明:

本地方式创建的PDB不会自动open

3 远程克隆创建PDB

create database link SALESPPDB connect to system identified by oracle using '192.168.1.111:1521/pdb1';

说明:

PDB1 是指 ORACLE数据库的PDB监听。可以通过lsnrctl status 查询
用户需要DBA权限。这里直接用SYSTEM用户

sqlplus sys/oracle@192.168.1.111:1521/pdb1  as sysdba
alter pluggable database pdb1 close immediate;
alter pluggable database pdb1 open read only;
create pluggable database pdb1
from PDB1@dbverify; 

4 克隆非CDB数据库方式

• 使用DBMS_PDB软件包生成元数据,然后使用SQL命令CREATE PLUGGABLE DTABASE 创建可拔插数据库;
• 数据泵(使用可传输表空间功能);
• Goldengate 复制软件

SQL> shutdown immediate ;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
alter database open read only;
 begin 
 dbms_pdb.describe(pdb_descr_file => '/home/oracle/ncdb.xml');
 END;
 /
set serveroutput on 
declare 
hold_var boolean;
begin
hold_var := DBMS_PDB.CHECK_PLUG_COMPATIBILITY(pdb_descr_file=>'/home/oracle/ncdb.xml');
if hold_var then 
	dbms_output.put_line('YES');
else
	dbms_output.put_line('NO');
end if;
end;
/
set linesize 350
col TIME FOR A30
col CAUSE FOR A10
col ACTION FOR A40 
COL MESSAGE FOR A40
col name for a20
select NAME,CAUSE,STATUS,MESSAGE,ACTION from pdb_plug_in_violations
CREATE PLUGGABLE DATABASE NOCDB
USING '/home/oracle/ncdb.xml'
COPY
FILE_NAME_CONVERT = ('/u01/dbfile/dk/','/u01/dbfile/CDB/dkpdb/');
sqlplus sys/foo@'speed2:1521/dkpdb' as sysdba
@?/rdbms/admin/noncdb_to_pdb.sql
 alter pluggable database SALESPPDB close immediate;
alter pluggable database SALESPPDB unplug into '/home/oracle/SALESPPDB.xml';
set serveroutput on 
declare 
hold_var boolean;
begin
hold_var := DBMS_PDB.CHECK_PLUG_COMPATIBILITY(pdb_descr_file=>'/home/oracle/SALESPPDB.xml');
if hold_var then 
	dbms_output.put_line('YES');
else
	dbms_output.put_line('NO');
end if;
end;
/
create pluggable database SALESPPDB
using '/home/oracle/SALESPPDB.xml'
COPY
FILE_NAME_CONVERT=('/u01/app/oracle/oradata/CDB1/SALESPPDB,'/u01/dbfile/CDB2/SALESPPDB)